A database system generally includes both volatile memory and non-volatile storage. Volatile memory devices (e.g., random access memory) provide faster access times than non-volatile storage devices (e.g., magnetic or optical disks). To take advantage of the speed of volatile memory, a buffer pool may be used. A buffer pool is memory used to cache blocks of memory, such as pages, as the blocks are being read from mechanical disk, or being modified in memory. The buffer pool improves performance by allowing data to be accessed from memory instead of from disk. However, the buffer pool contains a fixed amount of memory. Once the buffer pool is full or near capacity, storing new data in the buffer pool requires replacing or evicting data that already resides in the buffer pool with the new data. Several data replacement strategies have been developed to determine which of the data currently residing in the buffer pool are to be overwritten with the new data (i.e., replaced or evicted). Some of these strategies include replacing the least recently used (LRU) data, replacing the data that has been in the buffer the longest (First-In/First-Out, or FIFO), or replacing the newest data in the buffer (Last-In/First-Out, or LIFO).